package com.starview.star.operators.arith;

import com.starview.star.operators.Builtin;
import com.starview.star.operators.Intrinsics;
import com.starview.star.operators.arith.runtime.BignumBinary.BigNumDivide;
import com.starview.star.operators.arith.runtime.BignumBinary.BigNumMax;
import com.starview.star.operators.arith.runtime.BignumBinary.BigNumMin;
import com.starview.star.operators.arith.runtime.BignumBinary.BigNumMinus;
import com.starview.star.operators.arith.runtime.BignumBinary.BigNumPlus;
import com.starview.star.operators.arith.runtime.BignumBinary.BigNumPwr;
import com.starview.star.operators.arith.runtime.BignumBinary.BigNumRemainder;
import com.starview.star.operators.arith.runtime.BignumBinary.BigNumTimes;
import com.starview.star.operators.arith.runtime.BignumCompare.BignumEQ;
import com.starview.star.operators.arith.runtime.BignumCompare.BignumGE;
import com.starview.star.operators.arith.runtime.BignumCompare.BignumGT;
import com.starview.star.operators.arith.runtime.BignumCompare.BignumLE;
import com.starview.star.operators.arith.runtime.BignumCompare.BignumLT;
import com.starview.star.operators.arith.runtime.BignumCompare.BignumNE;

public class Arithmetic
{
  public static void declare(Intrinsics cxt)
  {
    cxt.declareBuiltin(new Builtin("__decimal_plus", BigNumPlus.type(), BigNumPlus.class));
    cxt.declareBuiltin(new Builtin("__decimal_minus", BigNumMinus.type(), BigNumMinus.class));
    cxt.declareBuiltin(new Builtin("__decimal_times", BigNumTimes.type(), BigNumTimes.class));
    cxt.declareBuiltin(new Builtin("__decimal_divide", BigNumDivide.type(), BigNumDivide.class));
    cxt.declareBuiltin(new Builtin("__decimal_rem", BigNumRemainder.type(), BigNumRemainder.class));
    cxt.declareBuiltin(new Builtin("__decimal_min", BigNumMin.type(), BigNumMin.class));
    cxt.declareBuiltin(new Builtin("__decimal_max", BigNumMax.type(), BigNumMax.class));
    cxt.declareBuiltin(new Builtin("__decimal_power", BigNumPwr.type(), BigNumPwr.class));
    
    cxt.declareBuiltin(new Builtin(BignumEQ.name, BignumEQ.type(), BignumEQ.class));
    cxt.declareBuiltin(new Builtin(BignumNE.name, BignumNE.type(), BignumNE.class));
    cxt.declareBuiltin(new Builtin(BignumLE.name, BignumLE.type(), BignumLE.class));
    cxt.declareBuiltin(new Builtin(BignumLT.name, BignumLT.type(), BignumLT.class));
    cxt.declareBuiltin(new Builtin(BignumGE.name, BignumGE.type(), BignumGE.class));
    cxt.declareBuiltin(new Builtin(BignumGT.name, BignumGT.type(), BignumGT.class));
  }
}
